home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 089 - Misc Stuff - PD.dsk / DRIVER.S < prev    next >
Text File  |  2019-02-17  |  6KB  |  222 lines

  1. ********************************
  2. *                              *
  3. * "CALL -APPLE PRINTER DRIVER" *
  4. *                              *
  5. *  A printer driver for the    *
  6. * Apple ][ game paddle port    *
  7. *                              *
  8. *            by                *
  9. *     Randy Wiggington         *
  10. *      Steve  Wozniak          *
  11. *     Darrell  Aldrich         *
  12. *        Ron Aldrich           *
  13. *        Dave Garson           *
  14. *        Val Golding           *
  15. *                              *
  16. *  with finishing touches  by  *
  17. *        Glen Bredon           *
  18. *                              *
  19. * ...in other words, everyone  *
  20. * had their finger in the pie! *
  21. *                              *
  22. * Written for Integral Data    *
  23. * printers, but easily modify- *
  24. * able to many serial printers *
  25. *                              *
  26. * Flash and inverse characters *
  27. * are converted to normal      *
  28. * before being output.         *
  29. *                              *
  30. ********************************
  31.  
  32.  
  33. ********************************
  34. *                              *
  35. * PINOUTS, GAME I/O TO PRINTER *
  36. *                              *
  37. * GAME I/O PIN     PRINTER PIN *
  38. * 15 (AN0)      3 IDS   (RCVD) *
  39. *  8 (GND)      7 IDS (SIGGND) *
  40. *  4 (SW2)      5 IP225  (CTS) *
  41. *  4 (SW2)     20 IP440 (DRDY) *
  42. *                              *
  43. ********************************
  44.  
  45.  
  46. CH        = $24
  47. CSWL      = $36
  48. RECON     = $3EA
  49. AMP       = $3F5
  50. MARK      = $C058
  51. SPACE     = $C059
  52. SW2       = $C063
  53. WAIT      = $FCA8
  54. CROUT     = $FD8E
  55. COUT1     = $FDF0
  56.  
  57. * AFTER BRUNNING THIS, THE
  58. * PRINTER CAN BE SELECTED FROM
  59. * APPLESOFT BY TYPING  "&".
  60. * (FROM INTEGER, CALL 1013 OR
  61. * CALL 768.)
  62.  
  63. * FROM BIG MAC, TYPE "USER" IN
  64. * EDITOR MODE.
  65.  
  66.           ORG $2F0       ;TO PUT MAIN PROGRAM AT $300
  67.  
  68.           LDA #$4C
  69.           STA AMP
  70.           LDA #INIT
  71.           STA AMP+1
  72.           LDA #>INIT
  73.           STA AMP+2
  74.           RTS
  75.  
  76. INIT      LDA CH         ;"&"-VECTOR POINTS HERE
  77.           STA COLCNT
  78.           LDY CSWL+1
  79.           LDA #OUTPUT
  80.           STA CSWL
  81.           LDA #>OUTPUT
  82.           CMP CSWL+1     ;ENTRY ALREADY MADE? IF SO,
  83.           BEQ NODOS      ;DON'T ACCIDENTALLY RECONNECT
  84.           STA CSWL+1
  85.           CPY #>COUT1
  86.           BEQ NODOS
  87.           JMP RECON
  88. NODOS     RTS
  89.  
  90. OUTPUT    CMP #$80       ;NORMAL CHR?
  91.           BGE OUTPUT1    ;BRANCH IF SO
  92.           AND #$3F       ;CONVERT FLASH AND INVERSE
  93.           ADC #$20       ;TO NORMAL (CARRY IS CLEAR).
  94.           EOR #%11100000
  95. OUTPUT1   PHA
  96. OUTPUT2   BIT SW2        ;IF NO HANDSHAKE: LDA #$48
  97.           BPL OUTPUT2    ; AND JSR WAIT.
  98.           LDA COLCNT     ;IF COLUMN COUNT IS LESS
  99.           CMP CH         ;THAN HORIZONTAL CURSOR
  100.           PLA            ;THEN SEND A SPACE.
  101.           PHA
  102.           BCS TESTCTRL
  103.           LDA #" "
  104. TESTCTRL  BIT RTS1       ;TEST FOR CONTROL CHR
  105.           BEQ PRNTIT
  106.           INC COLCNT
  107.           BNE PRNTIT
  108.           DEC COLCNT     ;DON'T "INC" TO 0
  109. PRNTIT    JSR DOCHAR
  110.           PLA
  111.           PHA
  112.           BCC OUTPUT2    ;CAUGHT UP WITH CH?
  113.           EOR #$8D       ;TEST FOR CR
  114.           BNE FINISH     ;NOT CR, WIND UP
  115.           STA COLCNT     ;YES CR, ZERO COL COUNT
  116.           STA CH         ;IN CASE OF NOVID MODE
  117.           BIT LINFEED    ;LINEFEED REQUESTED?
  118.           BPL DELAY      ;BRANCH IF NOT
  119.           LDA #$8A       ;SEND ONE
  120.           JSR OUTPUT1
  121. DELAY     LDA #$58
  122.           JSR WAIT
  123. FINISH    PLA
  124.           PHA
  125.           BIT VIDEO      ;VIDEO REQUESTED?
  126.           BMI NOVID      ;BRANCH IF NOT
  127.           JSR COUT1      ;SEND TO SCREEN
  128.           LDA #0         ;TO FORCE FALL THROUGH TO CHKBND
  129. NOVID     BIT RTS1       ;CONTROL CHR?
  130.           BEQ CHKBND     ;DON'T INC CH IF CONTROL CHR
  131.           INC CH         ;UPDATE CH IF NOVID
  132. CHKBND    LDA COLCNT     ;CHECK WINDOW
  133.           CMP #$FF       ;255 WIDTH?
  134.           BEQ RETURN     ;IF SO, DON'T TEST WNDWDTH
  135.           SEC
  136.           SBC WNDWDTH
  137.           BCS CR         ;DO A CR IF AT RIGHT MARGIN
  138.           BIT LISTFLG    ;PROXIMITY CHECK REQUESTED?
  139.           BPL RETURN     ;BRANCH IF NOT
  140.           SBC #$F7       ;ARE WE WITHIN 7 CHRS OF END?
  141.           BCC RETURN     ;BRANCH IF NOT
  142.           PLA            ;GET LAST CHR
  143.           PHA
  144.           EOR #" "       ;WAS IT A SPACE
  145.           BNE RETURN     ;BRANCH IF NOT
  146. CR        JSR CROUT      ;YES, DO CR
  147.           BIT LISTFLG    ;"BASIC" LISTING OPTION?
  148.           BPL RETURN     ;BRANCH IF NOT
  149.           LDA #6         ;YES, TAB IN 6 SPACES
  150.           STA CH
  151. RETURN    PLA
  152. RTS1      RTS
  153.  
  154. DOCHAR    STY YSAVE
  155.           PHP            ;SAVE CARRY STATUS
  156.           LDY #11        ;BIT COUNT
  157.           CLC
  158. NXTBIT    PHA
  159.           BCS MARKOUT
  160.           LDA SPACE
  161.           BCC OV
  162. MARKOUT   LDA MARK
  163. OV        LDA BAUD
  164. DELAY1    PHA
  165.           LDA #$20
  166. DELAY2    LSR
  167.           BCC DELAY2
  168.           PLA
  169.           SBC #1
  170.           BNE DELAY1
  171.           PLA
  172.           ROR
  173.           DEY
  174.           BNE NXTBIT
  175.           LDY YSAVE
  176.           PLP
  177.           RTS
  178.  
  179. YSAVE     DS 1           ;SCRATCH
  180.  
  181. * WNDWDTH: POKE 970,DESIRED WIDTH
  182. *    [DEFAULT = 80 COLUMNS]
  183. *   POKE 970,255 WILL DEFEAT
  184. *   MARGIN CHECK AND CAN BE USED
  185. *   FOR SENDING GRAPHICS DATA TO
  186. *   A GRAPHICS PRINTER LIKE THE
  187. *   PAPER TIGER.
  188.  
  189. WNDWDTH   DFB 80
  190.  
  191. * THE FOLLOWING 3 FLAGS ARE
  192. * TESTED ONLY FOR SIGN:
  193.  
  194. * LISTFLG: POKE 971,255 FOR A
  195. *   BASIC-LIKE LISTING.  FOR
  196. *   LISTING A BASIC PROGRAM, ALSO
  197. *   POKE 33,33 AND SELECT VIDEO.
  198. *    [DEFAULT = NOT DONE]
  199.  
  200. * VIDEO: POKE 972,255 TO DEFEAT
  201. *   PRINTING TO THE SCREEN.
  202. *    [DEFAULT = VIDEO ON]
  203.  
  204. * LINFEED: POKE 973,0 TO
  205. *   DISABLE A LINEFEED AFTER
  206. *   A CARRIAGE RETURN.
  207. *    [DEFAULT = LINEFEED]
  208.  
  209. LISTFLG   DFB 0
  210. VIDEO     DFB 0
  211. LINFEED   DFB 255
  212.  
  213. * BAUD: POKE 974,BAUDNUM:
  214. *   BAUDNUM = 2   FOR 9600 BAUD
  215. *   BAUDNUM = 20  FOR 1200 BAUD
  216. *   BAUDNUM = 215 FOR 110  BAUD
  217. *    [DEFAULT = 1200 BAUD]
  218.  
  219. BAUD      DFB 20
  220.  
  221. COLCNT    DS 1           ;SCRATCH
  222.